#include "cpp-httplib/httplib.h"
#include "searcher.hpp"

const std::string root_path = "./wwwroot";
const std::string input = "data/raw_html/raw.txt";

int main()
{
	//使用cpp-httplib库
	/*注意：cpp-httplib要使用较新版本的gcc，而centos7的gcc默认为4.8.5,这个编译器要么运行报错，要么编译不通过。
	所以在使用前，应该先升级gcc。此外，我们也不使用cpp-httplib的最新版本，而是使用其0.7.15版本。*/
	ns_searcher::Searcher search;

	search.InitSearcher(input);//创建索引
	httplib::Server svr;//用httplib先创建一个Server对象

	svr.set_base_dir(root_path.c_str()); //设置首页路径

	//当获取到"/s"(搜索)命令时，需要返回数据。
	svr.Get("/s",[&search](const httplib::Request &req,httplib::Response &rsp)
	{
		//req为申请串，rsp为应答串
		if(!req.has_param("word"))//检测是否有参数，参数名为word
		{
			rsp.set_content("必须要有搜索内容!","text/plain;charset=utf-8");//构建应答正文，以及这个应答以什么形式返回(想让用户浏览器将返回内容当做什么解释)。这里返回的是一个正常的文本文件。	
			return;
		}
		//走到此处说明有搜索内容，此时应该搜索
		std::string word = req.get_param_value("word");//获取用户提上来的参数word的内容
		//std::cout << "用户在搜索：" << word << std::endl;
		LOG(NORMAL,"用户在搜索："+ word);
		std::string json_string;
		search.Search(word,&json_string);
		rsp.set_content(json_string,"application/json");//返回一个.json文件	
	});
	LOG(NORMAL,"服务器启动成功！");
	svr.listen("0.0.0.0",8081);//绑定任意ip的8081端口号，开始listen	
	return 0;
}














